package de.fhffm.tables;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Persistence;
import javax.persistence.Query;

@Entity
public class Pflanze {

	@Id 
	@GeneratedValue( strategy = GenerationType.IDENTITY )
	//@Column (name = "PFLANZEN_ID")
	private int pflanzenID;
	
	//@Column (nullable = false, unique = true, name = "NAME" ) 
	private String sorte;
	
	//@Column (nullable = false, unique = true, name = "SCHAERFEGRAD" ) 
	private int schaerfegrad;
	
	//@Column (nullable = false, unique = true, name = "REIFEZEIT" ) 
	private int reifezeit;
	
	//@Column (nullable = false, unique = true, name = "FARBE" ) 
	private String farbe;
	
	//@Column (nullable = false, unique = true, name = "ERTRAG" ) 
	private String ertrag;
	
	//@Column (nullable = false, unique = true, name = "HERKUNFT" ) 
	private String herkunft;
	
	@ManyToOne
	private Art art;
	
	
	@OneToMany (mappedBy="pflanze", cascade = CascadeType.ALL)
	private List<Aussaat> aussaat = new ArrayList<Aussaat>();
	
	public List<Aussaat> getAussaat(){
		return aussaat;
	}
	
	public void setAussaat(List<Aussaat> aussaat){
		this.aussaat = aussaat;
	}
	


	public Art getArt(){
		return art;
	}
	
	public void setArt(Art art){
		this.art = art;
	}
	
	
	public int getPflanzenID() {
		return pflanzenID;
	}
	

	public void setPflanzenID(int pflanzenID) {
		this.pflanzenID = pflanzenID;
	}

	public int getSchaerfegrad() {
		return schaerfegrad;
	}

	public void setSchaerfegrad(int schaerfegrad) {
		this.schaerfegrad = schaerfegrad;
	}

	public int getReifezeit() {
		return reifezeit;
	}

	public void setReifezeit(int reifezeit) {
		this.reifezeit = reifezeit;
	}

	public String getFarbe() {
		return farbe;
	}

	public void setFarbe(String farbe) {
		this.farbe = farbe;
	}

	public String getErtrag() {
		return ertrag;
	}

	public void setErtrag(String ertrag) {
		this.ertrag = ertrag;
	}

	public String getHerkunft() {
		return herkunft;
	}

	public void setHerkunft(String herkunft) {
		this.herkunft = herkunft;
	}
	
	public void fromStringSortenSchaerfegrad(int schaerfegradS){
		schaerfegrad = schaerfegradS;
	}

	public String getSorte() {
		return sorte;
	}

	public void setSorte(String sorte) {
		this.sorte = sorte;
	}
	
	public static void main(String[] args) {
		
		/*EntityManagerFactory factory;
		factory = Persistence.createEntityManagerFactory("test");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
	
		// Hinzufügen wenn Art schon vorhanden!
	    Query q = em
	            .createQuery("SELECT p FROM Art p WHERE  p.art = :name");
	        q.setParameter("name", "c.annum");
		

	        Art art = (Art) q.getSingleResult();
		
	
		
		Pflanze pflanze1 = new Pflanze();
		pflanze1.setErtrag(2);
		pflanze1.setFarbe("blau");
		pflanze1.setHerkunft("England");
		pflanze1.setReifezeit(1);
		pflanze1.setSchaerfegrad(3);
		pflanze1.setSorte("Jalapeno ENglish");
		pflanze1.setA(art);
		
		art.getPflanze().add(pflanze1);
		
		em.persist(pflanze1);
		em.persist(art);
		em.getTransaction().commit();
		em.close(); */
		
		// Hinzufügen wenn Art noch nicht vorhanden
		/*Art a1 = new Art();
		a1.setArt("c.annum");
		em.persist(a1);
		
		Pflanze p1 = new Pflanze();
		p1.setErtrag(5);
		p1.setFarbe("grün");
		p1.setHerkunft("Thailand");
		p1.setReifezeit(1);
		p1.setSchaerfegrad(3);
		p1.setSorte("Jalapeno");
		p1.setA(a1);
		em.persist(p1);
		
		Pflanze p2 = new Pflanze();
		p2.setErtrag(4);
		p2.setFarbe("braun");
		p2.setHerkunft("Deutschland");
		p2.setReifezeit(9);
		p2.setSchaerfegrad(4);
		p2.setSorte("Jalapeno Extreme");
		p2.setA(a1);
		
		em.persist(p2);
		
		
		a1.getPflanze().add(p1);
		a1.getPflanze().add(p2);
		em.persist(a1);
		em.persist(p1);
		em.persist(p2);
		em.getTransaction().commit();
		em.close(); */
		
		
	}

}
